"""
@name : 3-3.线程锁-事件锁
@author : wenyao
@projectname: sanchuanglianxi
"""
#event事件锁
#类名：Event
#主要提供了三个方法 set、wait、clear
#事件机制，定义了一个全局flag
#如果Flag的值为False，那么wait方法阻塞
#如果Flag的值为True,那么wait方法不再阻塞
#这种锁，类似与交通红绿灯，（默认是红灯）

import threading
import time

def func(i):
    print(i, 'start')
    event.wait()  #检测当前的event是什么状态，默认Flag为False，默认红灯
    print(i,"end")

event = threading.Event()
for i in range(10):
    t = threading.Thread(target=func, args = (i,))
    t.start()

event.clear()  #主动将状态设置为红灯

# while True:
#     inp = input(">>>")
#     if inp == "1":
#         event.set()  #主动将状态这是为绿灯
#         break
#     time.sleep(2)